#pragma once
#include "DXAMLCommon.h"
#include "ITracingService.h"

class CXcpWinCodeTracer :
	public ITracingService
{
public:
	CXcpWinCodeTracer();
	~CXcpWinCodeTracer();
	virtual HRESULT Initialize();
	virtual void TraceXcpEvent(enum _XTraceMarkerType traceMarker, const void * pData, enum XTraceType traceType, enum XTraceLevel level, unsigned long suite);
	virtual XUINT8 IsTracingEnabled(enum XTraceLevel level, unsigned long suite);
	virtual void GetTraceState(enum XTraceLevel * level, unsigned long * suite);
private: 
	void WriteXcpEvent(enum _XTraceMarkerType traceMarker, const void * pData, enum XTraceType traceType);
	void ClassicETWRegistryCheck();
	static struct _EVENT_DESCRIPTOR s_enabledEvent;
};

